Reference
- Kaggle 홈페이지 - Kaggle
- 5강 ‘Booleans and Conditionals’ - Python Micro-Course Home Page
불리언(Booleans)
파이썬에는 True
와 False
중 하나의 값을 가지는 bool
타입의 변수가 있습니다.
x = True |
True |
보통 코드에 True
나 False
값을 바로 넣기보다 불리언 연산자들(boolean operators) 를 통해 boolean 값을 얻습니다. 이 연산자들은 질문에 대한 참/거짓을 알려줍니다. 아래 표와 예제들을 통해 이 연산자들을 알아보겠습니다.
비교 연산자들(Comparison Operations)
Operation | Description | Operation | Description | |
---|---|---|---|---|
a == b |
a equal to b |
a != b |
a not equal to b |
|
a < b |
a less than b |
a > b |
a greater than b |
|
a <= b |
a less than or equal to b |
a >= b |
a greater than or equal to b |
비교 연산자는 조금 영리한거 같지만…
3.0 == 3 |
True |
꼭 그런거 같진 않습니다…
'3' == 3 |
False |
비교 연산자들이 앞서 보았던 산술 연산자들(arithmetic operators)과 더해지면 무한한 범위의 수학적 테스트들을 표현하는게 가능합니다.
예를 들어, 2 로 나눈 나머지가 1 인지 확인하여 숫자가 홀수 인지를 검사할 수 있습니다.
def is_odd(n): |
Is 100 odd? Fasle |
비교 연산자를 사용할 때 `=` 대신 `==` 을 사용한다는 것을 기억하십시오. 만약 `n == 2` 라고 적는 다면 n의 값을 묻는 것이고, `n = 2` 라고 적으면 n에 할당된 값을 변경하는 것입니다.
불리언 값 연산(Combining Boolean Values)
파이썬은 보통의 “and”, “or”과 “not” 개념을 사용하여 boolean 값들을 연산하는 기능을 제공합니다. 사실 boolean 관련 파이썬 연산자들은 저게 전부입니다: and
, or
, not
이것으로 우리는 can_run_for_president
함수를 조금 더 정확하게 만들 수 있습니다.
간단하게, 아래 표현식의 결과를 예상할 수 있나요?
True or True and False |
True |
파이썬에는 위와 같은 표현식에서 우선순위 규칙(precedence rule)에 따라 연산의 순서를 결정합니다. 예를 들어, and
는 or
보다 우선순위에 있기 때문에 첫번째 표현식은 참(True)이 됩니다. 만약 왼쪽에서 오른쪽으로 연산했다면 True or True
를 먼저 실행한 다음(결과는 True
), 그 결과를 False
와 and
연산하여 최종 값인 False
를 얻었을 것입니다.
우선순위(order of precedence)를 외우려고 할 수도 있지만 괄호를 사용하는 것이 더 안전한 방법입니다. 이는 버그를 방지하는데 도움이 될 뿐만이 아니라 코드를 읽는 모든 사람이 이해하기 수월해 집니다.
예를 들어, 아래의 코드를 살펴보세요.
prepared_for_weather = have_umbrella or rain_level < 5 and have_hood or not rain_level > 0 and is_workday |
오늘 날씨에 …
- 만약 우산을 가지고 있다면…
- 혹은 만약 비가 많이 오는게 아니고 내가 후드를 가지고 있다면…
- 아니면 비가 내리지 않고 일하는 날이 아니라면 준비되었는지 말해줍니다
위 파이썬 코드는 버그가 있을뿐만 아니라 읽기에도 힘듭니다. 괄호를 추가해서 두 가지의 문제점을 해결해 보겠습니다:
prepared_for_weather = have_umbrella or (rain_level < 5 and have_hood) or not (rain_level > 0 and is_workday) |
조건문(Conditionals)
불리언(boolean)은 그 자체만으로도 매우 유용하지만 if
, elif
, else
키워드를 사용하는 조건문과 함께 사용되면 진가를 발휘됩니다.
조건문 혹은, if-then
문을 사용하면 프로그래머는 일정 불리언 조건(참/거짓 조건)에 따라 특정 코드를 실행할 수 있게 됩니다. 파이썬 조건문의 기본 예제는 다음과 같습니다.
def inspect(x): |
0 is zero |
파이썬의 if
와 else
는 다른 언어에서 주로 사용하는 것과 같습니다; elif
는 조금 독특한 키워드로 else if
를 축약한 단어입니다. 조건문에서 elif
와 else
는 선택사항입니다. elif
는 얼마든지 추가하고 싶은만큼 추가하실 수 있습니다.
콜론(:
)과 공백을 사용하여 별도의 코드 블록을 나타내는 것을 기억하시길 바랍니다. 이는 함수를 정의 할 때와 유사합니다; 함수의 헤더는 :
로 끝나고 다음 줄은 4칸 들여 쓰기됩니다. 모든 들여쓰기 된 줄들은 다음 들여쓰기가 안된 줄을 만날 때까지 하나의 함수에 속하게 됩니다.
def f(x): |
Only printed when x is positive; x = 1 |
불리언 변환(Boolean conversion)
우리는 앞서 int 형으로 바꿔주는 int()
와, float 형으로 바꾸는 float()
봤기 때문에, bool 형으로 바꿔주는 bool()
이라는 함수가 있다는 것이 별로 놀랍지 않습니다.
print(bool(1)) # all numbers are treated as true, except 0 |
True |
boolean이 예상되는 조건문에서 non-boolean 객체를 사용할 수 있습니다. 파이썬은 암시적으로 그에 상응하는 boolean 값으로 처리 할 것입니다 :
if 0: |
spam |
조건식(일명 ‘삼항연산(ternary)’)
어떤 조건에 따라 두 개의 값 중 하나를 변수의 값으로 설정하는 것은 매우 흔한 패턴입니다.
def quiz_message(grade): |
You passed the quiz with a grade of 80 |
파이썬에는 이러한 경우에 문장을 단순화 시킬 수 있는 단일 라인 조건식 구문(syntax)을 지원합니다.
def quiz_message(grade): |
You failed the quiz with a grade of 45 |
보시면 다른 언어에 있는 삼항 연산자와 비슷하다는 것을 알 수 있습니다. 예를 들어, javascript에서 라면 우리는 위의 표현을 var outcome = grade <50? 'failed': 'passed'
로 작성할 것입니다. (하지만 가독성 측면에서 파이썬이 더 우수하다고 생각합니다.)
연습문제(Your Turn)
booleans and conditionals -> third Python programming exercise